iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Python

30天Python資料分析挑戰:從基礎到視覺化系列 第 23

Day 23: 餅圖 (Pie Chart) 的應用與實作

  • 分享至 

  • xImage
  •  

Day 23: 餅圖 (Pie Chart) 的應用與實作

餅圖(Pie Chart)是一種常用來展示不同類別之間比例分佈的視覺化工具。它能夠以直觀的方式顯示各類別占總體的比例,因此在分析各類別的相對大小時非常有用。今天,我們將講解餅圖的應用情境,並通過 Matplotlib 來繪製餅圖,展示分類的比例分佈。
前幾天有一個叫做plot的檔案,用那一份,然後之前的程式全部都先執行一遍
https://ithelp.ithome.com.tw/upload/images/20241007/20140380kR3FqhYsQs.jpg

1. 餅圖的應用情境

餅圖適合用來展示以下情境的資料:

  • 比例分析:顯示各類別在總體中的占比,例如市場中各品牌的占有率。
  • 構成分析:展示某個整體是由哪些部分構成的,例如不同部門在公司總收入中的貢獻。
  • 簡單比較:用來展示類別之間的比例關係,適合少量類別的簡單比較。

2. 使用 Matplotlib 繪製簡單餅圖

首先,我們使用 Matplotlib 繪製一個簡單的餅圖,來顯示不同花卉種類在資料集中的比例。

# 計算每個花卉種類的數量
species_counts = iris_df['target'].value_counts()

# 繪製餅圖
plt.pie(species_counts, labels=['Setosa', 'Versicolor', 'Virginica'], autopct='%1.1f%%', startangle=140)
plt.title('Proportion of Different Iris Flower Species in the Dataset')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241007/20140380IW4INg8ZGe.jpg
這段程式碼會繪製一個餅圖,顯示 Iris 資料集中三種花卉的比例,並在每個扇形上顯示百分比。

3. 調整餅圖的外觀

我們可以通過調整餅圖的顏色、分離效果、陰影等屬性來改進餅圖的外觀,使其更加美觀和易於理解。

3.1 添加顏色和分離效果

# 設置顏色與分離效果
colors = ['#ff9999','#66b3ff','#99ff99']
explode = (0.1, 0, 0)  # 將第一塊分離出來

# 繪製改進外觀的餅圖
plt.pie(species_counts, labels=['Setosa', 'Versicolor', 'Virginica'], autopct='%1.1f%%', colors=colors, explode=explode, shadow=True, startangle=140)
plt.title('Proportion of Different Iris Flower Species in the Dataset (Improved)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241007/20140380EvoojKO0LN.jpg
這段程式碼設定了 colors 參數來更改餅圖的顏色,使用 explode 參數將第一個扇形(Setosa)分離出來,並添加了陰影效果(shadow=True)。

3.2 添加圖例與標籤

我們可以在餅圖中添加圖例和標籤,來更好地描述每個類別的含義。

# 繪製餅圖並添加圖例
plt.pie(species_counts, labels=['Setosa', 'Versicolor', 'Virginica'], autopct='%1.1f%%', colors=colors, explode=explode, shadow=True, startangle=140)
plt.title('Proportion of Different Iris Flower Species in the Dataset')
plt.legend(title="Flower Species", loc="best")
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241007/20140380nL0vrDGDsh.jpg
這段程式碼使用 legend() 函數在餅圖中添加了圖例,顯示每個類別的名稱。

4. 繪製子餅圖(嵌套餅圖)

有時候我們希望展示多層級的比例資料,可以使用嵌套餅圖(Sub-pie Chart)來表示不同層級之間的關係。

# 子餅圖的數據
group_counts = [50, 50, 50]  # 外圓各類別的樣本數
subgroup_counts = [20, 30, 15, 35, 10, 40]  # 內圓子類別的樣本數

# 設置顏色
colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99','#c2c2f0','#ffb3e6']

# 外圓餅圖
plt.pie(group_counts, radius=1.2, labels=['Group 1', 'Group 2', 'Group 3'], colors=colors[:3], wedgeprops=dict(width=0.3, edgecolor='w'))

# 內圓餅圖
plt.pie(subgroup_counts, radius=1, labels=['A', 'B', 'C', 'D', 'E', 'F'], labeldistance=0.7, colors=colors, wedgeprops=dict(width=0.4, edgecolor='w'))

plt.title('Nested Pie Chart Example')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241007/20140380jzU9SUnbpB.jpg
這段程式碼會繪製一個嵌套餅圖,展示不同類別及其子類別的比例分佈。

5. 以 DataFrame 為基礎繪製餅圖

我們可以直接使用 Pandas 的 plot() 函數來繪製餅圖,方便地展示 DataFrame 中的資料比例。

# 直接使用 DataFrame 繪製餅圖
species_counts_df = species_counts.reset_index()
species_counts_df.columns = ['target', 'count']
species_counts_df.set_index('target', inplace=True)
species_counts_df.plot(kind='pie', y='count', autopct='%1.1f%%', colors=colors, legend=False, title='Proportion of Different Iris Flower Species in the Dataset')
plt.ylabel('')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241007/20140380JjRhaM0CZi.jpg
這段程式碼會將 DataFrame 中的資料轉換為餅圖,展示每個花卉種類在資料集中的比例。

6. 小結

今天我們學習了如何使用 Matplotlib 繪製餅圖,包括:

  1. 簡單的餅圖,用來展示不同類別的比例分佈。
  2. 添加顏色、分離效果與陰影,使餅圖更加美觀。
  3. 繪製子餅圖(嵌套餅圖),用來展示多層級的資料比例。
  4. 使用 Pandas 直接繪製餅圖,簡化操作。

餅圖能夠幫助我們直觀地展示資料的比例分佈,適合用於少量類別的比例比較。接下來,我們將學習如何使用箱型圖來展示資料的分佈情況和檢測異常值。


上一篇
Day 22: 資料排序與排名
下一篇
Day 24: 箱型圖 (Box Plot) 的應用與實作
系列文
30天Python資料分析挑戰:從基礎到視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言